package net.zigin.nhi.could.waste.dao;

import net.zigin.nhi.could.waste.dto.WasteOutPutStorageDto;
import net.zigin.nhi.could.waste.model.WasteBase;
import net.zigin.nhi.could.waste.vo.WasteBaseVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/*#################################################################*
# 说明:以下代码通过哲勤代码生成工具自动生成    
# 工具:GeneratorCode
# 作者:mgw1986                                                  
# 生成时间:2021-9-13 21:14:41                                               
##################################################################*/

/**
 * WasteBase数据访问类
 *
 * @author mgw1986
 * @version V1.0
 * @ClassName: WasteBaseMapper
 * @date 2021-9-13 21:14:41
 */
public interface WasteBaseMapper extends BaseMapper<WasteBase, String> {

    /**
     * 箱id获取医废列表
     */
    List<WasteBase> getListByBoxId(@Param("wasteBoxId") String wasteBoxId);

    List<WasteBase> getListByBoxIdAndStatus(@Param("wasteBoxId") String wasteBoxId,@Param("status") String status);

    /**
     * 解除全部绑定
     */
    void removeAllBindBagWithBox(@Param("wasteBoxId") String wasteBoxId);

    /**
     * 解除全部绑定
     */
    void removeBoxIdAfterOutDepot(@Param("wasteBoxId") String wasteBoxId);

    /**
     * 解除绑定
     */
    void removeSomeBindBagWithBox(@Param("wasteBoxId") String wasteBoxId, @Param("wasteBaseIds") List<String> wasteBaseIds);

    /**
     * 出库详情 todo 关联 waste_out
     */
    List<WasteBaseVo> getPrintMessage(WasteOutPutStorageDto wasteOutPutStorageDto);

    /**
     * 出库
     */
    void printMessage(@Param("revicerId") String revicerId,@Param("revicerName") String revicerName);

    /**
     * 待出库列表
     */
    List<WasteBase> getPendingOutStorageList(@Param("hospitalBaseId") String hospitalBaseId);

    /**
     * 医废列表
     */
    List<WasteBase> getListByCodes(@Param("codes") List<String> codes);

    /**
     * 医废列表
     */
    List<WasteBase> getListByIds(@Param("ids") List<String> ids);

    List<WasteBase> getListByRFID(@Param("rfids") List<String> rfids);

    /**
     * 当前人收集列表
     */
    List<WasteBase> getCurrentCollectList(@Param("collectUserStaffId") String collectUserStaffId);

    /**
     * 获取科室最新收集医废
     */
    WasteBase getLastestOneByHospitalDepartId(@Param("hospitalDepartId") String hospitalDepartId);

    /**
     * 获取医废重量
     */
    Float getWeightByIds(@Param("wasteBaseIds") List<String> wasteBaseIds);

    /**
     * 箱获取医废重量
     */
    Float getWeightByBoxIdAndStatus(@Param("wasteBoxId") String wasteBoxId,@Param("status") String status);

    /**
     * 获取医废类型
     */
    List<String> getClassifyByIds(@Param("wasteBaseIds") List<String> wasteBaseIds);

    /**
     * 箱获取医废类型
     */
    List<String> getClassifyByBoxId(@Param("wasteBoxId") String wasteBoxId);

    List<WasteBaseVo> getPageListByCondition(Map<String, Object> paramMap);

    Integer getPageCountByCondition(Map<String, Object> paramMap);

    List<WasteBase> listByWasteBoxRecordId(@Param("wasteBoxRecordId") String wasteBoxRecordId);

    List<WasteBaseVo> getWasteOutInfo(@Param("wasteOutId") String wasteOutId);

    Integer getRfidBindCount(@Param("rfid") String rfid);
}